import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
import Components from 'unplugin-vue-components/vite'
import AutoImport from 'unplugin-auto-import/vite'
import { VantResolver } from 'unplugin-vue-components/resolvers'
// https://vitejs.dev/config/
/** @type {import('vite').UserConfig} */
export default defineConfig({
  plugins: [
    vue(),
    vueJsx(),
    Components({
      resolvers: [VantResolver()]
    }),
    AutoImport({
      // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
      imports: ['vue', 'vue-router'],
      // 生成自动导入的TS声明文件
      dts: './auto-import.d.ts'
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@import "@/assets/scss/variable.scss";
                         @import "@/assets/scss/mixin.scss";
                         @import "@/assets/scss/function.scss";
                         `
      }
    },
    postcss: {
      plugins: [
        require('postcss-px-to-viewport')({
          viewportWidth: 375, // 视口的宽度，对应的是我们设计稿的宽度，一般是750
          viewportHeight: 667, // 视口的高度，根据750设备的宽度来指定，一般指定1334，也可以不配置
          unitPrecision: 3, // 指定 px 转换为视口单位值的小数位数
          viewportUnit: 'vmin', // 指定需要转换成的视口单位，建议使用 vw
          minPixelValue: 1, // 小于等于1px的不转换
          mediaQuery: false // 允许在媒体查询中转换 px
        })
      ]
    }
  },
  server: {
    host: true,
    port: 9000,
    cors: true
    // proxy: {
    //   '/api': {
    //     target: 'http://localhost:3000',
    //     changeOrigin: true,
    //     rewrite: path => path.replace(/^\/api/, '')
    //   }
    // }
  }
})
